【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空 |
您所在的位置:网站首页 › linux 执行字符串命令 › 【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空 |
🦄 个人主页——🎐个人主页 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油!🪁🍁🪁🍁🪁🍁🪁🍁 目录 一、关系运算符(数字比较符) 二、判断脚本执行时是否有传参,或者判断传参个数 2.1 判断脚本执行时是否有传参,或者判断传参个数 2.2 使用$1参数 三、判断文件或文件夹是否存在 3.1 判断文件是否存在 3.2 判断文件夹是否存在 四、判断字符串是否相等 4.1 使用双等号 == 进行比较 4.2 使用 = 进行比较 五、判断上个命令执行是否正常 5.1 判断上个命令执行是否正常 5.2 获取命令的输出 六、判断字符串是否为空 一、关系运算符(数字比较符)在shell脚本中,我们经常在if语句中看到-ge、le等字样,下面我们看看这都是什么意思 -eq :equal(相等) -ne :not equal(不等) -gt :greater than(大于) -ge :greater than or equal(大于或等于) -lt :less than(小于) -le :less than or equal(小于或等于)运算符 说明 举例 含义 -eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。 //equals 等于 -ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。 //no equals 不等于 -gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。 //greater than 大于 -lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。 //less than 小于 -ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。 //greater equals 大于等于 -le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。 //less equals 小于等于 注意: 1、在shell中进行比较时,结果为0代表真,为1代表假。 2、-eq,-ne等比较符只能用于数字比较,有字符也会先转换成数字然后进行比较。 # 统计文件行数 rowNum=$(cat /var/log/cron | wc -l) if [ $rowNum -ge 1 ] && [ $rowNum -le 100 ]; then echo "1 - 100" else echo "大于100" fi执行结果: 在 Shell 脚本中,要判断参数个数,可以使用特殊变量 $# 来获取传递给脚本或函数的参数个数。 if [ $# -eq 0 ]; then echo "没有参数." else echo "参数个数: $#" fi在上述示例中,通过检查 $# 变量的值来判断是否有传递给脚本或函数的参数。 在shell中$1变量表示脚本的第一个参数。所以如果判断$1参数是空值,即可表示脚本没有参数 if [ "$1" ];then echo "带参数"; else echo "没有带参数 " fi执行结果: 上述示例中,将/var/log/messages 替换为要检查的实际文件路径。-f 参数用于检查路径是否为一个普通文件。 如下将判断改为"[[xxx]]" if [[ -f "/path/to/file" ]]; then echo "File exists." else echo "File does not exist." fi与方括号 [] 不同,[[ 提供了更多的功能和灵活性,并且在条件测试中更加常用。 test 命令也可以直接用于条件判断。 if test -e "/var/log/messages" then echo "文件存在." else echo "文件不存在" fi执行结果: 注意:上述实例中的路径是测试路径,需要将其替换为要检查的实际文件路径。 3.2 判断文件夹是否存在如果要判断是否存在的是一个目录而不是一个文件,可以将 -f 参数替换为 -d 参数。 if [ -d "/path/to/directory" ]; then echo "Directory exists." else echo "Directory does not exist." fi在上述示例中,将 /path/to/directory 替换为您要检查的相对路径下的文件夹路径。-d 参数用于检查路径是否为一个目录。 使用 test if test -d "/path/to/directory"; then echo "Directory exists." else echo "Directory does not exist." fi执行结果: 注意,在双等号 == 前后的字符串变量周围需要使用双引号引起来,以防止字符串中包含空格或特殊字符时出错。 执行结果: 在 Shell 脚本中,可以使用特殊变量 $? 来判断上一个命令是否执行正常。该变量保存了上一个命令的退出状态码。 通常情况下,命令执行成功时会返回退出状态码 0,而执行失败时会返回非零的退出状态码。 # 正确的 命令 java -version echo $? if [ $? -eq 0 ]; then echo "Command executed successfully." else echo "Command failed to execute." fi在上述示例中,首先执行了 "java -verison" 命令。通过检查 $? 变量的值来判断是否成功执行。 注意:$? 变量的值仅表示上一个命令的退出状态码,而不是具体的错误信息。如下错误“java -version” 在 Shell 脚本中,可以获取命令的输出,使用反引号 (``) 或 $() 运算符: file=/var/log/cron num=$(cat ${file} | wc -l) echo "$num" num=`cat ${file} | wc -l` echo "$num"执行结果: 在上述示例中,获取文件文件行数并输出,使用了管道符号 “|”,我们可以拼接更多的命令。 六、判断字符串是否为空在 Shell 脚本中,要判断字符串是否为空,可以使用以下方法: 使用 -z 参数 str="hello" if [ -z "$str" ]; then echo "String is empty." else echo "String is not empty." fi在上述示例中,我们定义str为hello。然后,使用 -z 参数来检查字符串是否为空。如果字符串为空,则打印 "String is empty.";否则,打印 "String is not empty."。 使用 -n 参数 str="" if [ -n "$str" ]; then echo "String is not empty." else echo "String is empty." fi与 -z 相反,使用 -n 参数可以检查字符串是否非空。如果字符串非空,则打印 "String is not empty.";否则,打印 "String is empty."。 使用字符串长度进行比较 str="" if [ ${#str} -eq 0 ]; then echo "String is empty." else echo "String is not empty." fi${#str} 表示获取字符串 str 的长度。使用 -eq 运算符来比较字符串长度是否为零。如果字符串长度为零,则打印 "String is empty.";否则,打印 "String is not empty."。 注意:在以上示例中,str 变量是一个空字符串。可以将其替换为要检查的实际字符串变量。 总结:字符串或者文件夹为空判断方式都有好多种,我们只需要掌握一种且能解决问题即可,也不用全部掌握。 参考链接: shell关系运算符-eq -ne -gt -lt -ge -le的用法详解及实例 - 极客库 shell--判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空_shell 判断参数-CSDN博客 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |